package club.util;

import java.util.HashMap;
import java.util.Map;

/**
 * 统一响应消息封装类
 * 用于封装Controller层返回给前端的通用JSON数据格式
 */
public class Message {

    /**
     * 状态码：100表示成功，200表示失败
     */
    private int code;

    /**
     * 提示信息，用于前端展示
     */
    private String message;

    /**
     * 响应数据体，存储需要返回给前端的业务数据
     */
    private Map<String, Object> extend = new HashMap<>();

    /**
     * 成功响应的静态工厂方法
     * @return 包含成功状态的Message对象
     */
    public static Message success() {
        Message result = new Message();
        result.setCode(100);
        result.setMessage("处理成功！");
        return result;
    }

    /**
     * 失败响应的静态工厂方法
     * @return 包含失败状态的Message对象
     */
    public static Message fail() {
        Message result = new Message();
        result.setCode(200);
        result.setMessage("处理失败！");
        return result;
    }

    /**
     * 链式添加响应数据的方法
     * @param key 数据键
     * @param value 数据值
     * @return 当前Message对象，用于链式调用
     */
    public Message add(String key, Object value) {
        this.getExtend().put(key, value);
        return this;
    }

    // 以下为Getter和Setter方法
    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Map<String, Object> getExtend() {
        return extend;
    }

    public void setExtend(Map<String, Object> extend) {
        this.extend = extend;
    }
}